﻿
#load "FSharpChart.fsx"

open System
open MSDN.FSharp.Charting

// ########################################################### //
seq {
        for x in 1.0 ..0.1..10.0 do
            yield x,sin(x * 5.0) + cos(x)
}
|> Array.ofSeq
|> FSharpChart.Line

// ########################################################### //
seq {
    for v in 1.0..0.2..100.0 do
        let x = (cos v) * v / 100.0
        let y = (sin(2.0 * v)) * v/100.0
        yield x,y
}
|> Array.ofSeq
|> FSharpChart.Line

// ########################################################### //
let numbers = [("stasi",100.0);("cheka",200.0)] 
numbers |> FSharpChart.Bar
numbers |> FSharpChart.Column

// ########################################################### //
seq {
    for x in 1.0..0.2..100.0 do
        let y1 = (cos x) * x / 50.0
        let y2 = (sin(2.0 * x)) * x/100.0
        yield x,(y1,y2)
}
|> Array.ofSeq
|> FSharpChart.Range

// ########################################################### //
let chart = (seq {
        for x in 1.0 ..0.1..10.0 do
            yield x,cos(x * 5.0) + sin(x)
}
|> Array.ofSeq 
|> FSharpChart.Line 
|> FSharpChart.Create)

seq {
        for x in 1.0 ..0.1..5.0 do
            yield x,sin(x * 10.0) - 2.0 * cos(x)
}
|> Array.ofSeq
|> chart.SetData

// ########################################################### //
let uitimer = new System.Windows.Forms.Timer(Interval = 100,Enabled = true)
uitimer.Tick 
    |> Observable.scan (fun state _ -> state + 0.1) 0.0
    |> Observable.map (fun s -> s* 2.0,(sin (3.0 * s) + cos s))
    |> FSharpChart.FastLine
